package com.moli.iov.alarm.model.dto.res;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.moli.iov.alarm.model.dto.AlarmLocationDto;
import com.moli.iov.alarm.model.dto.AlarmMileageInfoDto;
import com.moli.iov.alarm.model.dto.AlarmVehicleInfoDto;
import com.moli.iov.alarm.model.po.AlarmLocation;
import com.moli.iov.alarm.model.po.extend.AlarmMileageExceptionExtend;
import com.moli.iov.alarm.model.po.extend.FenceInfoExtend;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * @ClassName
 * @Description TODO
 * @Author lixy
 * @Date 2019/3/1 13:57
 **/
@Data
public class AlarmInfoResDto implements Serializable {

  private static final long serialVersionUID = 7500298910428217575L;

  /**
   * 唯一 报警编码
   */
  private String alarmId;

  /**
   * 车架号
   */
  private String vin;

  /**
   * 车牌号
   */
  private String license;

  /**
   * 企业id
   */
  private Long companyId;

  /**
   * 报警编码
   */
  private Integer alarmCode;

  /**
   * 报警名称
   */
  private String alarmName;

  /**
   * 报警状态 1、正在报警 2、报警结束
   */
  private Integer status;

  /**
   * 报警状态名称
   */
  private String statusName;

  /**
   * 类型： 1、报警  2、故障
   */
  private Integer alarmType;

  /**
   * 故障级别 1、一级报警  2、二级报警  3、三级报警
   */
  private Integer alarmLevel;

  /**
   * 故障级别名称
   */
  private String alarmLevelStr;

  /**
   * 报警来源： 1、T-Box上报 2、平台判断
   */
  private Integer alarmSource;

  /**
   * 开始时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date beginTime;

  /**
   * 结束时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date endTime;

  /**
   * 最后上报时间
   */
  private Date lastReportDate;

  /**
   * 持续时间
   */
  private Long duration;

  /**
   * 持续时间 格式化
   */
  private String durationStr;

  /**
   * 离线时长
   */
  private String offLineTimeStr;

  /**
   * 备注
   */
  private String memo;

  /**
   * 解除告警用户id
   */
  private Long relieveUserId;

  /**
   * 解除告警用户名称
   */
  private String relieveRealName;

  /**
   * 车辆信息
   */
  private AlarmVehicleInfoDto alarmVehicleInfo;

  /**
   * 车型
   */
  private String vehicleModelStr;

  /**
   * 里程信息
   */
  private AlarmMileageInfoDto alarmMileageInfo;

  /**
   * 当前里程
   */
  private Double currentMileage;

  /**
   * 经纬度信息
   */
  private AlarmLocationDto location;

  /**
   * 解除报警时经纬度信息
   */
  private AlarmLocation disarmLocation;

  /**
   * 异变里程
   */
  private String differenceMileage;

  /**
   * 里程异变审核 状态 0、无效变异 1、有效变异
   */
  private Integer meAuditStatus;

  /**
   * 里程异变审核描述
   */
  private String meAuditStatusStr;

  /**
   * 里程异变审 原因说明
   */
  private String meAuditMemo;

  /**
   * 里程异变审核 时间
   */
  private Date meAuditTime;

  /**
   * 里程异变信息
   */
  private AlarmMileageExceptionExtend mileageExceptionChange;

  /**
   * 围栏信息
   */
  private FenceInfoExtend fenceInfo;


  /**
   * 忽略原因
   */
  private String ignoreMemo;

  /**
   * 忽略操作用户id
   */
  private Long ignoreUserId;

  /**
   * 忽略操作用户名称
   */
  private String ignoreUserName;

  /**
   * 围栏详情信息
   */
  private VehicleFenceExtend vehicleFenceExtend;

  /**
   * 是否已处理
   */
  private Boolean isHandle;
}
